<?php
// 设置响应头
header('Content-Type: application/json');

// 检查请求方法
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => '只允许POST请求']);
    exit;
}

// 获取POST数据
$input = file_get_contents('php://input');
$data = json_decode($input, true);

// 验证数据
if (!isset($data['txtContent']) || !isset($data['imageUrl']) || !isset($data['userName'])) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => '缺少必要参数']);
    exit;
}

$txtContent = $data['txtContent'];
$imageUrl = $data['imageUrl'];
$userName = $data['userName'];
$imageInput = $data['imageInput'] ?? '';

// 创建output目录（如果不存在）
$login_org=$_COOKIE['enorg'];
$outputDir = $login_org.'-output';
if (!file_exists($outputDir)) {
    if (!mkdir($outputDir, 0777, true)) {
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => '无法创建'.$login_org.'-output目录']);
        exit;
    }
}

// 创建用户目录（如果不存在）
$userDir = $outputDir . '/' . preg_replace('/[^a-zA-Z0-9_\-\x{4e00}-\x{9fa5}]/u', '', $userName);
if (!file_exists($userDir)) {
    if (!mkdir($userDir, 0777, true)) {
        http_response_code(500);
        echo json_encode(['success' => false, 'message' => '无法创建用户目录']);
        exit;
    }
}

// 生成文件名（使用用户名+时间戳）
$timestamp = date('Y-m-d_H-i-s');
// $fileName = $userName . '_' . $timestamp;  //yanbo_2025-09-12_06-38-03

$fileName = $timestamp;  //2025-09-12_06-38-03

// 保存TXT文件
$txtFilePath = $userDir . '/' . $fileName . '.txt';
if (file_put_contents($txtFilePath, $txtContent) === false) {
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => '无法保存TXT文件']);
    exit;
}

// 保存图片
$imageSaved = false;
$imageFilePath = '';

// 判断是本地上传的图片还是远程URL图片
if (strpos($imageInput, 'data:image') === 0) {
    // 本地上传的Base64图片
    $imageData = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $imageInput));
    $imageFilePath = $userDir . '/' . $fileName . '.webp';
    
    // 转换为WebP格式
    $image = @imagecreatefromstring($imageData);
    if ($image !== false) {
        // 检查是否支持WebP
        if (function_exists('imagewebp')) {
            imagewebp($image, $imageFilePath, 80);
        } else {
            // 如果不支持WebP，保存为png格式
            $imageFilePath = $userDir . '/' . $fileName . '.png';
            imagejpeg($image, $imageFilePath, 80);
        }
        imagedestroy($image);
        $imageSaved = true;
    }
} else if (filter_var($imageUrl, FILTER_VALIDATE_URL)) {
    // 远程URL图片
    $imageData = @file_get_contents($imageUrl);
    if ($imageData !== false) {
        // 从URL中获取原始文件扩展名
        $urlPath = parse_url($imageUrl, PHP_URL_PATH);
        $originalExtension = pathinfo($urlPath, PATHINFO_EXTENSION);
        
        // 如果无法获取扩展名或扩展名为空，则根据图片内容检测格式
        if (empty($originalExtension)) {
            $imageInfo = @getimagesizefromstring($imageData);
            if ($imageInfo !== false) {
                switch ($imageInfo['mime']) {
                    case 'image/jpeg':
                        $originalExtension = 'jpg';
                        break;
                    case 'image/png':
                        $originalExtension = 'png';
                        break;
                    case 'image/gif':
                        $originalExtension = 'gif';
                        break;
                    case 'image/webp':
                        $originalExtension = 'webp';
                        break;
                    default:
                        $originalExtension = 'jpg'; // 默认使用jpg
                }
            } else {
                $originalExtension = 'jpg'; // 默认使用jpg
            }
        }
        
        // 保持原始扩展名格式
        $imageFilePath = $userDir . '/' . $fileName . '.' . strtolower($originalExtension);
        
        // 直接保存原始格式的图片
        if (file_put_contents($imageFilePath, $imageData) !== false) {
            $imageSaved = true;
        }
    }
}

// 检查图片是否保存成功
if (!$imageSaved) {
    // 删除已保存的TXT文件
    if (file_exists($txtFilePath)) {
        unlink($txtFilePath);
    }
    
    http_response_code(500);
    echo json_encode(['success' => false, 'message' => '无法保存图片文件']);
    exit;
}

// 生成缩略图
$thumbnailCreated = false;
$thumbnailPath = '';
if ($imageSaved && file_exists($imageFilePath)) {
    // 创建缩略图 - 缩略图统一使用webp格式
    $thumbnailPath = $userDir . '/' . $fileName . '-thumb.webp';
    $originalImage = @imagecreatefromstring(file_get_contents($imageFilePath));
    
    if ($originalImage !== false) {
        // 获取原始图像尺寸
        $originalWidth = imagesx($originalImage);
        $originalHeight = imagesy($originalImage);
        
        // 计算缩略图尺寸（保持宽高比，最大边长为300px）
        $thumbSize = 300;
        $ratio = min($originalWidth, $originalHeight) / $thumbSize;
        $thumbWidth = $originalWidth / $ratio;
        $thumbHeight = $originalHeight / $ratio;
        
        // 创建缩略图
        $thumbnail = imagecreatetruecolor($thumbWidth, $thumbHeight);
        
        // 保持透明度（对于PNG图像）
        $currentExtension = pathinfo($imageFilePath, PATHINFO_EXTENSION);
        if (strtolower($currentExtension) === 'png') {
            imagealphablending($thumbnail, false);
            imagesavealpha($thumbnail, true);
        }
        
        // 调整图像大小
        imagecopyresampled($thumbnail, $originalImage, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $originalWidth, $originalHeight);
        
        // 保存缩略图为webp格式
        if (function_exists('imagewebp')) {
            imagewebp($thumbnail, $thumbnailPath, 80);
            $thumbnailCreated = true;
        } else {
            // 如果不支持WebP，保存为JPEG格式
            $thumbnailPath = $userDir . '/' . $fileName . '-thumb.jpg';
            imagejpeg($thumbnail, $thumbnailPath, 80);
            $thumbnailCreated = true;
        }
        
        imagedestroy($originalImage);
        imagedestroy($thumbnail);
    }
}

// 创建ZIP压缩包
$zipCreated = false;
$zipFilePath = $userDir . '/' . $fileName . '.zip';
if (class_exists('ZipArchive')) {
    $zip = new ZipArchive();
    if ($zip->open($zipFilePath, ZipArchive::CREATE) === TRUE) {
        // 添加TXT文件
        if (file_exists($txtFilePath)) {
            $zip->addFile($txtFilePath, basename($txtFilePath));
        }
        
        // 添加原图
        if (file_exists($imageFilePath)) {
            $zip->addFile($imageFilePath, basename($imageFilePath));
        }
        
        // 添加缩略图
        if ($thumbnailCreated && file_exists($thumbnailPath)) {
            $zip->addFile($thumbnailPath, basename($thumbnailPath));
        }
        
        $zip->close();
        $zipCreated = true;
    }
}

// 成功响应
echo json_encode([
    'success' => true, 
    'message' => '已成功保存到云端',
    'zipFile' => $zipCreated ? $zipFilePath : null
]);
?>